package com.yxhl.zoume.data.http.repository.car;

import com.yxhl.protobuf.BizOrderRequest;
import com.yxhl.protobuf.BizOrderResponse;
import com.yxhl.zoume.data.http.rest.param.specialcar.CancelOrderParam;
import com.yxhl.zoume.data.http.rest.param.specialcar.SpecialCarCashPayParam;
import com.yxhl.zoume.data.http.rest.param.specialcar.SpecialCarPayInfoParam;
import com.yxhl.zoume.data.http.rest.param.specialcar.SpecialCarPollingParam;
import com.yxhl.zoume.data.http.rest.param.specialcar.SpecialCarQueryParam;
import com.yxhl.zoume.data.http.rest.response.specialcar.CancelOrderResponse;
import com.yxhl.zoume.data.http.rest.response.specialcar.SpecialCarCashPayResponse;
import com.yxhl.zoume.data.http.rest.response.specialcar.SpecialCarPayInfoResponse;
import com.yxhl.zoume.data.http.rest.response.specialcar.SpecialCarPollingResponse;
import com.yxhl.zoume.data.http.rest.response.specialcar.SpecialCarPriceQueryResponse;

import rx.Observable;

/**
 * Created by sugarya on 16/4/9.
 * 快车
 */
public interface SpecialCarRepository {
    /**
     * 查询快车行程费用
     *
     * @return
     */
    Observable<SpecialCarPriceQueryResponse> querySpecialCarPrice(SpecialCarQueryParam specialCarQueryParam);

    /**
     * 快车下单
     *
     * @return
     */
    Observable<BizOrderResponse> getSpecialCarOrder(BizOrderRequest bizOrderRequest);

    /**
     * 快车地图轮询
     *
     * @param specialCarPollingParam
     * @return
     */
    Observable<SpecialCarPollingResponse> querySpecialCarPollingResult(SpecialCarPollingParam specialCarPollingParam);

    /**
     * 取消快车订单
     *
     * @param cancelOrderParam
     * @return
     */
    Observable<CancelOrderResponse> cancelSpecialCarOrder(CancelOrderParam cancelOrderParam);

    /**
     * 查询未完成的快车订单
     *
     * @param request
     * @return
     */
    Observable<BizOrderResponse> queryUnFinishSpecialCarOrder(BizOrderRequest request);

    /**
     * 快车现金支付
     *
     * @param param
     * @return
     */
    Observable<SpecialCarCashPayResponse> specialCarPayByCash(SpecialCarCashPayParam param);

    /**
     * 获取快车订单详情
     *
     * @param param
     * @return
     */
    Observable<SpecialCarPayInfoResponse> fetchSpecialCarPayInfo(SpecialCarPayInfoParam param);
}
